#include <cstdio>
#include <cstring>
using namespace std;
const int N=100050;
int c[N];
int n,x;
//res要开long long
long long res;
int lowbit(int x){
    return x&(-x);
}
int sum(int x){
    int res=0;
    while(x>0){
        res+=c[x];
        //-lowbit ==> 右子节点--父节点
        //计算前缀和，往左走，往上爬
        x-=lowbit(x);
    }
    return res;
}
void add(int x,int d){
    while(x<=n){
        c[x]+=d;
        //+lowbit ==> 左子节点--父节点
        //更新节点，往右走，往上爬
        x+=lowbit(x);
    }
}
int main(void){
    memset(c,0,sizeof(c));
    scanf("%d",&n);
    for(int i=1;i<=n;i++){
        scanf("%d",&x);
        //标记在x这个数出现一次了
        add(x,1);
        //此时查询sum，就是在x前面输入的，如果比x大就是逆序对
        //而根据树状数组的定义sum就是查出x前面的，再用i减即可
        res+=i-sum(x);
    }
    printf("%lld\n",res);
    return 0;
}